From: Florian Müllner Date: Fri, 26 Jun 2020 15:01:31 +0000 (+0200) Subject: windowPreview: Allow to disable overlay X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~684^2^2~166 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=c134091268b15624f3378dfebbb398f6a8f8c837;p=gnome-shell.git windowPreview: Allow to disable overlay WindowPreviews now contain and manage overlaid elements like close button or title label themselves. That's generally better, but right now the only way to disable those overlays (for example during transitions) is to prevent any hover or focus events from getting to the preview. Instead, add some explicit API for enabling or disabling overlay support. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345 --- diff --git a/js/ui/windowPreview.js b/js/ui/windowPreview.js index caa073264..c5510e4c1 100644 --- a/js/ui/windowPreview.js +++ b/js/ui/windowPreview.js @@ -189,6 +189,12 @@ var WindowPreviewLayout = GObject.registerClass({ }); var WindowPreview = GObject.registerClass({ + Properties: { + 'overlay-enabled': GObject.ParamSpec.boolean( + 'overlay-enabled', 'overlay-enabled', 'overlay-enabled', + GObject.ParamFlags.READWRITE, + true), + }, Signals: { 'drag-begin': {}, 'drag-cancelled': {}, @@ -255,6 +261,7 @@ var WindowPreview = GObject.registerClass({ this.inDrag = false; this._selected = false; + this._overlayEnabled = true; this._closeRequested = false; this._idleHideOverlayId = 0; @@ -434,6 +441,9 @@ var WindowPreview = GObject.registerClass({ } showOverlay(animate) { + if (!this._overlayEnabled) + return; + const ongoingTransition = this._border.get_transition('opacity'); // Don't do anything if we're fully visible already @@ -569,6 +579,25 @@ var WindowPreview = GObject.registerClass({ }); } + // eslint-disable-next-line camelcase + get overlay_enabled() { + return this._overlayEnabled; + } + + // eslint-disable-next-line camelcase + set overlay_enabled(enabled) { + if (this._overlayEnabled === enabled) + return; + + this._overlayEnabled = enabled; + this.notify('overlay-enabled'); + + if (!enabled) + this.hideOverlay(false); + else if (this['has-pointer'] || global.stage.key_focus === this) + this.showOverlay(true); + } + // Find the actor just below us, respecting reparenting done by DND code _getActualStackAbove() { if (this._stackAbove == null)